package com.jq.jqaicode.common.file;


import cn.hutool.core.util.StrUtil;
import com.jq.jqaicode.model.dto.HtmlCodeResult;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * 单个html文件保存
 */
public class HtmlCodeParserSave extends CodeParserSaveTemplate {

    //正则匹配
    private static final Pattern HTML_CODE_PATTERN = Pattern.compile("```html\\s*\\n([\\s\\S]*?)```", Pattern.CASE_INSENSITIVE);

    /**
     * 解析代码
     * @param codeContent
     * @return
     */
    @Override
    protected HtmlCodeResult parseCode(String codeContent) {
        if(StrUtil.isBlank(codeContent)){
            return null;
        }
        HtmlCodeResult htmlCodeResult=new HtmlCodeResult();
        // 提取 HTML 代码
        String htmlCode = extractHtmlCode(codeContent.trim());
        if (htmlCode != null && !htmlCode.trim().isEmpty()) {
            htmlCodeResult.setHtmlCode(htmlCode.trim());
        } else {
            // 如果没有找到代码块，将整个内容作为HTML
            htmlCodeResult.setHtmlCode(codeContent.trim());
        }
        return htmlCodeResult;
    }

    //保存文件
    @Override
    protected void saveFiles(HtmlCodeResult htmlCodeResult, String buildUniqueDir) {
        writeToFile(buildUniqueDir, "index.html", htmlCodeResult.getHtmlCode());
    }


    /**
     * 提取 HTML 代码内容
     *
     * @param content 原始内容
     * @return HTML代码
     */
    private String extractHtmlCode(String content) {
        Matcher matcher = HTML_CODE_PATTERN.matcher(content);
        if (matcher.find()) {
            return matcher.group(1);
        }
        return null;
    }

}
